package com.sgcc.ln.pmos.mobileapp.dialog;

import android.app.Activity;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.lxj.xpopup.core.CenterPopupView;
import com.sgcc.pmos.nativesdk.R;

/**
 * 人脸识别--风险告知书弹窗
 */
public class RiskNotifyDialog extends CenterPopupView {

    private TextView tvText, tvTitle;
    private RadioButton tvCancel;
    private RadioButton tvConfirm;
    private Activity activity;
    private long total = 5000;


    String[] titles = new String[]{"辽宁电力交易平台账号实名认证协议", "辽宁电力交易平台人脸识别认证服务协议"};


    String[] infos = new String[]{"为符合相关法律法规（包括《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》《互联网用户账号信息管理规定》等）对平台提供服务过程中的用户身份信息管理相关要求，并更好地保障您企业所属辽宁电力交易平台（以下简称“平台”）账号的权益，您应当阅读并遵守《辽宁电力交易平台账号实名认证协议》（以下称“本协议”）。您同意辽宁电力交易平台运营方（以下简称“我们”）收集您的必要身份信息，用于完成您当前平台账号的实名认证。我们也将严格按照本协议向您提供基于账户身份信息认证的相关服务。\n" +
            "\n" +
            "    请您务必仔细阅读本协议的全部内容，在充分理解相关内容后再慎重决定是否确认并同意本协议。本协议以字体加粗或其他合理方式提示用户重点阅读其中相关免除或限制责任条款，用户和平台均认可其合法性及有效性。如您不同意本协议，或拒绝提供个人信息进行实名认证，这将导致我们无法为您提供完整服务，您也可以选择停止使用。如您自主选择同意，则视为您已充分理解本协议，并同意作为本协议的一方当事人接受本协议的约束。\n" +
            "\n" +
            "    一、实名认证流程及认证信息变更\n" +
            "\n" +
            "            1.为完成您当前账户的实名认证，您需要向我们提供您本人真实有效的姓名、身份证件类型和证件号码等信息（具体以页面提示为准）。\n" +
            "\n" +
            "            2.为了保障您的个人信息及重要权益，您的身份信息仅限绑定当前账号。如您个人信息已绑定某账号，并完成实名认证，则您个人信息无法继续绑定其他账号。\n" +
            "\n" +
            "            3. 一旦您完成实名认证，相应的身份信息和认证结果将不因任何原因被修改或取消； 如果您的身份信息在完成认证后发生了变更，您应向我们提交相关证明材料，由我们协助您变更认证信息，请及时联系辽宁电力交易中心技术部（电子邮箱：sxjyzxwx2@126.com）。\n" +
            "\n" +
            "    二、用户使用须知\n" +
            "\n" +
            "            1.我们努力在现有技术能力基础上保障实名认证有效稳定运行，但由于技术的限制，以及采集人脸信息过程中容易受到环境光线、表情、妆容等不特定因素的影响，可能暂时无法保证每次实名认证都会成功。\n" +
            "\n" +
            "            2.如果您发现实名认证不成功，您可重新发起认证流程，或联系我们。",
            "第一条 总则\n" +
                    "请市场主体认真阅读《辽宁电力交易平台人脸识别认证服务协议》（以下简称“本协议”）。本协议是约定辽宁电力交易中心有限公司（以下简称“辽宁电力交易中心”）与各市场主体（以下简称“用户”）就使用人脸识别认证服务绑定或修改辽宁电力交易平台（以下简称“交易平台”）账号关联的密保邮箱或手机号相关事项所订立的有效合约。实际业务应用包括但不限于绑定、修改密保邮箱或手机号。\n" +
                    "\n" +
                    "您在页面通过勾选确认即表示您同意签署并接受本协议的全部约定内容，您同意并授权辽宁电力交易中心获取、使用您在申请该服务过程中所提供的个人信息（包括姓名、身份证号）及人脸影像数据，并提供给合法存有您信息的第三方合作机构进行比对核验，以核验您的身份。您理解并同意，使用人脸识别认证服务是您自行独立审慎判断的结果，您将对操作的行为及其产生的结果负责。\n" +
                    "\n" +
                    "辽宁电力交易中心有权随时根据有关法律、法规的变化以及公司经营状况和经营策略的调整等修改本协议内容，修改后的协议条款将在辽宁电力交易平台网站公布，无需另行单独通知您。若您不同意变更后的协议内容，您应向辽宁电力交易中心提出终止本协议并停止使用人脸识别服务或办理相关业务。若您在本协议内容通知变更后继续使用人脸识别服务或办理相关业务的，表示您已充分阅读、理解并接受变更后的协议内容。\n" +
                    "\n" +
                    "本协议全部条款内容最终解释权归辽宁电力交易中心所有。\n" +
                    "\n" +
                    "第二条 定义\n" +
                    "人脸识别认证服务：是指交易平台用户进行绑定、修改交易平台账号的密保邮箱或手机号时进行人脸识别认证，交易平台通过比对脸部特征并结合其身份信息，确认用户是使用本企业法人身份信息，完成密保邮箱或手机号的绑定、修改。\n" +
                    "\n" +
                    "脸部特征：是指可用以区分自然人个体的独特脸部特征。\n" +
                    "\n" +
                    "个人信息：是指以电子或其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息。包括但不限于：个人生物特征信息、身份证号码、手机号码、设备识别码等。\n" +
                    "\n" +
                    "第三条 权利义务\n" +
                    "用户承诺其为交易平台账号所属企业的法人，与交易平台市场成员基本信息一致。如果用户因市场成员基本信息未在辽宁电力交易平台及时变更，人脸识别认证无法通过，导致企业利益受损，辽宁电力交易中心对此不承担责任。如遇法人身故等特殊情况，企业应出具相关说明，并及时联系辽宁电力交易中心技术部（电子邮箱：sxjyzxwx2@126.com）予以处理。\n" +
                    "\n" +
                    "在进行人脸识别认证前，用户须已详细阅读，充分理解并接受《辽宁电力交易平台人脸识别认证服务协议》。用户理解并同意使用注册账户的企业法人的脸部特征，通过人脸识别认证后，完成密保邮箱或手机号的绑定、修改。\n" +
                    "\n" +
                    "在进行人脸识别认证时，用户须按照页面提示录入或验证本人面部信息，用户的面部信息特征将保存到交易平台服务器使用。为了提高验证的准确性，用户同意交易平台将用户向交易平台提供的脸部特征与法律法规允许的机构或政府机关授权的机构所保存的脸部特征进行比对核验（以上为辽宁电力交易中心处理用户人脸信息的方式）。\n" +
                    "\n" +
                    "用户理解并同意，在进行人脸识别认证时，应保证仅使用属于本企业的法人面部信息为本企业所拥有的交易平台账户进行人脸识别认证，否则给企业或其他第三方造成的损失，均由企业自行承担。用户不得使用他人脸部特征进行人脸识别认证，并且不得将属于本企业法人的脸部特征用于其他企业账户或者协助他人使用不正当或欺骗手段进行人脸识别认证，否则辽宁电力交易中心有权冻结其交易平台账号并采取相应的法律措施。\n" +
                    "\n" +
                    "鉴于计算机、互联网的特殊性，且由于技术水平限制及可能存在的各种恶意手段，人脸识别认证功能有可能因可控范围外的因素而无法正常提供服务，您如果勾选同意《辽宁电力交易平台人脸识别认证服务协议》，即表示同意该功能因下列原因导致无法正常提供服务时，辽宁电力交易中心对此导致的损害后果不承担赔偿责任：\n" +
                    "\n" +
                    "1.交易平台系统停机维护或升级；\n" +
                    "\n" +
                    "2.因台风、地震、洪水、雷电、疫情或恐怖袭击等不可抗力原因；\n" +
                    "\n" +
                    "3.因用户计算机软硬件或通信网络出现故障的；\n" +
                    "\n" +
                    "4.因病毒、木马、恶意程序攻击、网络拥堵或第三方服务问题等原因；\n" +
                    "\n" +
                    "5.其他非交易平台原因。\n" +
                    "\n" +
                    "除本协议另有规定外，辽宁电力交易中心有权基于业务调整或风险管控的需要，暂停、中断或终止向用户提供本服务的全部或部分功能。在终止提供人脸识别认证服务后，若发现用户之前存在违法或违反本协议目的的使用行为，给辽宁电力交易中心造成损失的，辽宁电力交易中心仍可要求用户承担相应责任，并保留通过司法途径予以追责的权利。\n" +
                    "\n" +
                    "第四条 面部特征相似的注意事项\n" +
                    "对于面部特征极为相似等不可避免的情况造成用户认证失败、被他人冒用等风险，并造成损害企业的财产和利益的后果。属于不可归属于辽宁电力交易中心的过错，用户在页面勾选确认同意本协议后，表明用户已接受该风险，并自愿承担相应后果。\n" +
                    "\n" +
                    "第五条 隐私保护\n" +
                    "辽宁电力交易平台为您提供更安全、优质的服务，辽宁电力交易中心不会在未经您合法授权时，公开、编辑或透露您个人信息，除非存在下列任一情况：\n" +
                    "\n" +
                    "1.与国家安全、国防安全直接相关的；\n" +
                    "\n" +
                    "2.与公共安全、公共卫生、重大公共利益直接相关的；\n" +
                    "\n" +
                    "3.与犯罪侦查、起诉、审判和判决执行等直接相关的；\n" +
                    "\n" +
                    "4.出于维护您或企业财产等重大合法权益但又无法及时得到本人同意的；\n" +
                    "\n" +
                    "5.所收集的个人信息是您自行向社会公众公开的；\n" +
                    "\n" +
                    "6.从合法公开披露的信息中收集个人信息，例如：合法的新闻报道、政府信息公开等渠道；\n" +
                    "\n" +
                    "7.用于维护交易中心所提供的服务的安全稳定运行所必需的，例如：发现、处置服务故障等；\n" +
                    "\n" +
                    "第六条 法律适用及争议解决\n" +
                    "本协议的效力、解释及纠纷的解决，适用于中华人民共和国法律。若多方用户之间发生任何纠纷或争议，请用户自行协商解决，辽宁电力交易中心没有调解义务；若用户与辽宁电力交易中心之间发生任何纠纷或争议，首先应友好协商解决，协商不成的，用户可以将纠纷或争议提交辽宁电力交易中心住所地有管辖权的人民法院提起诉讼。\n" +
                    "\n" +
                    "第七条 其他\n" +
                    "本协议以《最高人民法院关于审理使用人脸识别技术处理个人信息相关民事案件适用法律若干问题的规定》和《辽宁省电力市场运营基本规则》（以下简称“《规则》”）为依据，本协议未约定事宜请参照《规则》，本协议与《规则》规定不一致的，以《规则》规定为准。\n" +
                    "\n" +
                    "本协议所有条款的标题仅为阅读方便而设置，不应构成对本协议的任何解释，不对标题之下的内容及范围作任何限定。\n" +
                    "\n" +
                    "若本协议任何条款无论因何种原因导致部分无效或不可执行，其余条款仍继续有效，对双方具有约束力。\n" +
                    "\n" +
                    "由于目前人脸识别技术整体尚处于研究和试点应用阶段，人脸识别技术可能由于照片、现场识别情况、人脸识别技术等方面的原因，可能存在少量用户无法使用或在使用过程中存在不畅的情况，对于现阶段无法解决的技术问题，请用户给予充分谅解。"};


    private int type = 0;
    private CountDownTimer countDownTimer;

    public RiskNotifyDialog(@NonNull Activity context, int type, OnClickListener onClickListener) {
        super(context);
        this.activity = context;
        this.type = type;
        this.onClickListener = onClickListener;
    }

    @Override
    protected int getImplLayoutId() {
        return R.layout.risk_notify_dialog_layout;
    }

    @Override
    protected void onCreate() {
        super.onCreate();
        tvTitle = (TextView) findViewById(R.id.tvTitle);
        tvText = (TextView) findViewById(R.id.tvText);
        tvCancel = (RadioButton) findViewById(R.id.tvCancel);
        tvConfirm = (RadioButton) findViewById(R.id.tvConfirm);
        tvTitle.setText(titles[type]);
        tvText.setText(infos[type]);
        tvCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (null != countDownTimer)
                    countDownTimer.cancel();
                dismiss();
                activity.finish();
            }
        });
        tvConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
                onClickListener.onConfirm();
            }
        });
        tvConfirm.setChecked(false);
        tvConfirm.setClickable(false);
        tvConfirm.setText("5s");


        countDownTimer = new CountDownTimer(total, 1000) {
            @Override
            public void onTick(long l) {
                tvConfirm.setText(l / 1000 + 1 + "s");
            }

            @Override
            public void onFinish() {
                tvConfirm.setChecked(true);
                tvConfirm.setClickable(true);
                tvConfirm.setText("同意并继续");
            }
        };
        countDownTimer.start();


    }

    //完全可见执行
    @Override
    protected void onShow() {
        super.onShow();
    }

    //完全消失执行
    @Override
    protected void onDismiss() {

    }


    /**
     * 设置确定取消按钮的回调
     */
    public OnClickListener onClickListener;


    public interface OnClickListener {
        /**
         * 点击确定按钮事件
         */
        void onConfirm();
    }
}
